package com.young.launch_task_init.core.dispatcher

import com.young.launch_task_init.core.InitManager
import com.young.launch_task_init.core.group.BaseTaskGroup
import kotlinx.coroutines.CoroutineScope

/**
 * Author：young
 * .
 * Time： 1/4/2023 上午1:36 周六
 * .
 * Desc：任务调度器接口
 */
interface ITaskDispatcher {

    /**
     * 调度任务集合（使用挂起函数，是为了方便当前方法切换线程。不需要额外开启线程/协程）
     *
     * @param coroutineScope 协程作用域
     * @param taskGroupList 任务组集合
     * @param manager 初始化任务管理器，用于获取其他参数
     *
     */
    suspend fun dispatchTasks(
        coroutineScope: CoroutineScope,
        taskGroupList: List<BaseTaskGroup<*>>,
        manager: InitManager
    )
}